Программное обеспечение
Image:Operating system placement-ru.svg|thumb|Взаимодействие между пользователем, прикладным ПО, операционной системой и аппаратным обеспечением. rect 1 1 250 90 Пользователь rect 1 91 250 180 Прикладное программное обеспечение rect 1 181 250 270 Операционная система rect 1 271 250 360 Аппаратное обеспечение Програ́ммное обеспе́чение Акцентологический словарьСловари русского языка — Проверка слова «обеспечение» Грамота.ру (допустимо также произношение обеспече́ниеИздание орфографического словаря Ожегова 2007 года приводит единственный вариант — обеспече́ние. // Орфографический словарь русского языка / Под редакцией С. И. Ожегова. Локид-Пресс, 2007. 912 с. ISBN 5-320-00396-X.Издание словаря Розенталя 2006 и 2007 года тоже приводит единственный вариант — обеспече́ние // Д. Э. Розенталь. Русский язык. Справочник-практикум. Оникс, Мир и образование, 2007. ISBN 5-488-00712-1, 5-94666-332-1, 978-5-488-01360-5.) (ПО) — все или часть программ, процедур, правил и соответствующей документации системы обработки информации (ISO/IEC 2382-1:1993) Система обработки информации — одна или большее число компьютерных систем и устройств, таких как офисное и коммуникационное оборудование, которые выполняют обработку информации //Стандарт ISO/IEC 2382-1. Другие определения из международных и российских стандартов: * ПО — совокупность программ системы обработки информации и программных документовСогласно ГОСТ 19.101-77 К программным относят документы, содержащие сведения, необходимые для разработки, изготовления, сопровождения и эксплуатации программ., необходимых для эксплуатации этих программ (ГОСТ 19781-90) |издательство=Издательство стандартов|год=1989|страниц=168|isbn=5-7050-0155-X|тираж=55 000}}; * ПО — компьютерные программы, процедуры и, возможно, соответствующая документация и данные, относящиеся к функционированию компьютерной системы (IEEE Std 829—2008)IEEE Std 829—2008 IEEE Standard for Software and System Test Documentation; * ПО — программа или множество программ, используемых для управления компьютером (IEEE Std 829—2008)ISO/IEC 26514 Systems and Software Engineering — Requirements for designers and developers of user documentation. Программное обеспечение является одним из видов обеспечения вычислительной системы, наряду с техническим (аппаратным), математическим, информационным, лингвистическим, организационным и методическим обеспечениемЛипаев В. В. Проектирование программных средств. Учебное пособие — М.: Высшая школа. 302 с. ISBN 5-06-001570-X. Программное обеспечение — это то, что делает компьютеры универсальными, позволяя использовать типовую вычислительную машину для решения самых разнообразных задач . Академические области, изучающие программное обеспечение, — это информатика и программная инженерия. В компьютерном сленге часто используется слово «''софт''», произошедшее от английского слова «''software''», которое в этом смысле впервые применил в статье журнала American Mathematical Monthly математик из Принстонского университета Джон Тьюки в 1958 году . История Индустрия программного обеспечения делится на три основных сектора: * разработка программного обеспечения на заказ; * программное обеспечение для корпоративного потребителя; * программное обеспечение для массового потребителя. Перечисленное появлялось друг за другом с интервалом примерно в десятилетие . Предыстория. Зарождение программирования Первую программу написала Ада Лавлейс для разностной машины Чарльза Бэббиджа, однако поскольку эта машина так и не была достроена, разработки леди Лавлейс остались чисто теоретическими . Первая теория, касающаяся программного обеспечения, была предложена английским математиком Аланом Тьюрингом в 1936 году в эссе «On computable numbers with an application to the Entscheidungsproblem» («О вычислимых числах с приложением к проблеме разрешения») . Он создал так называемую машину Тьюринга, математическую модель абстрактной машины, способной выполнять последовательности рудиментарных операций, которые переводят машину из одного фиксированного состояния в другое. Главная идея заключалась в математическом доказательстве факта, что любое наперёд заданное состояние системы может быть всегда достигнуто последовательным выполнением конечного набора элементарных команд (программы) из фиксированного набора команд. Первые электронно-вычислительные машины 1940—1950-х годов перепрограммировались путём переключения тумблеров и переподключения кабелей, что требовало глубокого понимания их внутреннего устройства. К таким машинам, в частности, относился ENIAC (который, впрочем, впоследствии модифицировали, чтобы он мог, по крайней мере частично, программироваться с помощью перфокарт) . Важным шагом в сторону современных компьютеров был переход к архитектуре Джона фон Неймана, впервые воплощённой в Великобритании, в разработанном под руководством Дж. Р. Уомерзли и при участии Алана Тьюринга компьютере, известном как Марк I. Первая программа, хранимая в памяти компьютера, была запущена на нём 21 июня 1941 года. Для облегчения программирования этой машины Тьюринг придумал систему сокращённого кодирования, в которой для представления двоичного машинного кода использовалась последовательность телетайпных символов, выводимых на перфоленту . Один из сотрудников Тьюринга, Джон Мочли, став позднее (вместе с Джоном Преспером Эккертом) руководителем и основателем компании Eckert–Mauchly Computer Corporation, разработавшей такие ЭВМ, как BINAC и UNIVAC, поручил своим сотрудникам создать транслятор алгебраических формул. Хотя эта амбициозная цель в 1940-х годах и не была достигнута, под руководством Мочли был разработан так называемый «Краткий код», в котором операции и переменные кодировались двухсимвольными сочетаниями. Краткий код был реализован с помощью интерпретатора . Грейс Хоппер, работая с начала 1950-х годов над набором математических подпрограмм для UNIVAC I, изобрела программу-компоновщик « », которая по заданному идентификатору осуществляла выборку нужной подпрограммы из библиотеки, хранящейся на магнитной ленте, и записывала её в отведённое место оперативной памяти . В 1950-е годы появились первые высокоуровневые языки программирования, Джон Бэкус разработал FORTRAN, а Грейс Хоппер — COBOL. Подобные разработки значительно упростили написание прикладного программного обеспечения, которое писала тогда каждая фирма, приобретающая вычислительную машину . В начале 1950-х годов понятие программного обеспечения ещё не сложилось. Так не говорилось о нём ничего в вышедшей в январе 1952 года в журнале Fortune статье «Office Robots», описывавшем компьютеры Univac. Хотя в статье уже рассказывается о компьютере, как о универсальном устройстве, процесс программирования в этой статье был анахронически описан как «переключение тумблеров» . Однако к середине 50-х годов уже вполне сложилась разработка программного обеспечения на заказ , хотя сам термин «программное обеспечение» ещё не использовался, тогда говорили просто о «''программировании на заказ''» или «''программистском обслуживании''» . Первой программной фирмой стала компания System Development Corporation, созданная в 1956 году на базе принадлежащей правительству США фирме RAND Corporation . На этом этапе заказчиками программного обеспечения (уникального и не тиражируемого) были крупные корпорации и государственные структуры, и стоимость в один миллион долларов за программу не была чем-то необычным . Ранняя история. Корпоративное ПО Собственно сам термин «программное обеспечение» вошёл в широкий обиход с начала 1960-х годов, когда стало актуальным разграничение команд, управляющих компьютером, и его физических компонентов — аппаратного обеспечения . Тогда же и началось становление индустрии программного обеспечения, как самостоятельной отрасли. Первой компанией по разработке ПО стала основанная в 1959 году и с начальным капиталом в 100 долларов. Первыми клиентами CSC и появившихся вслед за нею софтверных компаний были сверхкрупные корпорации и государственные организации, вроде NASA , и фирма продолжала работать на рынке заказного ПО, как и другие первые программистские частные стартапы, такие как (CUC) . Первыми самостоятельно выпущенными программными продуктами, не поставляемыми в комплекте с компьютерным оборудованием, были выпущенный фирмой Applied Data Research в 1965 году генератор компьютерной документации AUTOFLOW, автоматически рисующий блок-схемы, и транслятор языка программирования , разработанный в 1960—1967 годах в Informatics, Inc. Становление рынка корпоративного программного обеспечения тесно связано с появлением семейства компьютеров IBM System/360. Достаточно массовые, относительно недорогие вычислительные машины, совместимые друг с другом на уровне программного кода, открыли дорогу тиражируемому программному обеспечению . Постепенно круг заказчиков программного обеспечения расширялся, что стимулировало разработку новых видов программного обеспечения. Так появились первые фирмы, специализирующиеся на разработке систем автоматизированного проектирования . В ноябре 1966 года журнал Business Week впервые обратился к теме индустрии программного обеспечения. Статья называлась «Software Gap — A Growing Crisis for Computers» и рассказывала как о перспективности этого бизнеса, так и о кризисе, связанном с нехваткой программистов . Типичные программные продукты того времени служили для автоматизации общих для бизнеса задач, таких, как начисление заработной платы или автоматизации бизнес-процессов таких предприятий среднего бизнеса, как производственное предприятие или коммерческий банк. Стоимость такого ПО, как правило, была между пятью и ста тысячами долларов . Персональные компьютеры и программное обеспечение для массового потребителя Появление в 1970-х годах первых персональных компьютеров (таких, как Альтаир 8800) создало предпосылки и для зарождения массового рынка программного обеспечения. Изначально программы для персональных компьютеров распространялись в «коробочной» форме через торговые центры или по почте и имели цену 100—500 долларов США . Знаковыми для зарождающего массового рынка программного обеспечения стали такие продукты, как электронная таблица VisiCalc, идея которой пришла Дэниелу Бриклину, когда тот, будучи выпускником MIT и инженером-программистом в DEC, посещал курсы в Гарвардской школе бизнеса и хотел облегчить себе утомительные финансовые расчёты , и текстовый процессор , разработку которого начал , тщательно изучив потребности рынка . О VisiCalc впервые заговорили, как о killer application, то есть компьютерном приложении, которое самим фактом своего существования доказывает нужность (и, зачастую, необходимость покупки) платформы, для которой реализована такая программа. Для VisiCalc и WordStar такой платформой стали персональные компьютеры, которые благодаря ним из богатой игрушки для гиков стали рабочим инструментом. С них началась микрокомпьютерная революция, а у этих программ появились конкуренты: электронные таблицы SuperCalc, Lotus 1-2-3, система управления базами данных dBase II, текстовый процессор WordPerfect и др. Текстовые процессоры, электронные таблицы, системы управления базами данных а так же графические редакторы вскоре стали основными продуктами рынка программного обеспечения для персональных компьютеров . Массовое тиражирование позволило снизить к середине 1990 годов стоимость программного обеспечения для персональных компьютеров до ста — пятисот долларов , при этом бизнес производителей ПО приобрёл определённое сходство с бизнесом звукозаписывающих компаний . Классификация ПО По степени тиражируемости всё программное обеспечение делится на три категории : * программное обеспечение, разрабатываемое на заказ; * программное обеспечение для крупных корпораций и организаций; * программное обеспечение для массового потребителя.Программное обеспечение для информационных киосков По степени переносимости программы делят на * платформозависимые; * кроссплатформенные. По способу распространения и использования программы делят на * несвободные (закрытые); * открытые; * свободные. По назначению программы делят на: * системные ; * прикладные . По видам программы делятГОСТ 19.101-77 на: * компонент — программа, рассматриваемая как единое целое, выполняющая законченную функцию и применяемая самостоятельно или в составе комплекса; * комплекс — программа, состоящая из двух или более компонентов и (или) комплексов, выполняющих взаимосвязанные функции, и применяемая самостоятельно или в составе другого комплекса. Системное программное обеспечение Комплекс программ, которые обеспечивают управление компонентами компьютерной системы, такими как процессор, оперативная память, устройства ввода-вывода, сетевое оборудование, выступая как «межслойный интерфейс», с одной стороны которого аппаратура, а с другой — приложения пользователя. В отличие от прикладного программного обеспечения, системное не решает конкретные практические задачи, а лишь обеспечивает работу других программ, предоставляя им сервисные функции, абстрагирующие детали аппаратной и микропрограммной реализации вычислительной системы, управляет аппаратными ресурсами вычислительной системы. Отнесение того или иного программного обеспечения к системному условно, и зависит от соглашений, используемых в конкретном контексте. Как правило, к системному программному обеспечению относятся операционные системы, утилиты , системы управления базами данных, широкий класс связующего программного обеспечения. Прикладное программное обеспечение Прикладное программное обеспечение — программа, предназначенная для выполнения определённых пользовательских задач и рассчитанная на непосредственное взаимодействие с пользователем. Лицензия Пользователь получает программное обеспечение вместе с лицензией, которая предоставляет ему право использовать программный продукт при условии выполнения положений о лицензировании. Как правило, эти условия ограничивают возможности пользователя передавать программный продукт другим пользователям, изменять код. Часть программного обеспечения поставляется со свободной лицензией. Такие лицензии позволяют распространять программное обеспечение, а также модифицировать его. Часть программного обеспечения распространяется как бесплатное. Существует также условно бесплатное программное обеспечение. В этом случае обычно пользователь бесплатно получает демонстрационную версию программного продукта с несколько ограниченными возможностями на определенный испытательный период, а после его окончания обязан или приобрести продукт, или деинсталлировать его. См. также * Жизненный цикл программного обеспечения * Программно-аппаратный комплекс * Патенты и программное обеспечение * Лицензия на программное обеспечение ** Проприетарное программное обеспечение ** Свободное программное обеспечение ** Открытое программное обеспечение * Компьютерный язык * Язык программирования * Связующее программное обеспечение * Лингвистическое программное обеспечение * Программная инженерия * Раздутое программное обеспечение * Software Asset Management Примечания Литература * ГОСТ Р ИСО/МЭК 12207-2010 Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств. * * * ДеМарко Т. Deadline. Роман об управлении проектами. — М.: Манн, Иванов и Фербер. — 2013. — 352 с. ISBN 978-5-91657-284-1 * ДеМарко Т., Листер Т. Человеческий фактор. Успешные проекты и команды. — М.: Символ-Плюс. — 2014. — 288 с. ISBN 978-5-93286-217-9 * [[Йордан, Эдвард|''Йордан Э.]] Путь камикадзе. Как разработчику программного обеспечения выжить в безнадежном проекте. — М.: Лори, 2012. — 290 с. ISBN 978-5-85582-227-3 * [[Соммервилл, Иан|Соммервилл И.'']]. Инженерия программного обеспечения. — Издательство Вильямс, 2002. — 624 с. ISBN 5-8459-0330-0 * * Ссылки Категория:Программное обеспечение